package leetcode.od;

import org.junit.Test;

import java.util.Scanner;

/**
 * @author pppppp
 * @date 2022/3/7 10:20
 * 描述
 * 输入一个 int 型的正整数，计算出该 int 型数据在内存中存储时 1 的个数。
 * <p>
 * 数据范围：保证在 32 位整型数字范围内
 * 输入描述：
 * 输入一个整数（int类型）
 * <p>
 * 输出描述： 这个数转换成2进制后，输出1的个数
 * <p>
 * 示例1
 * 输入：
 * 5
 * <p>
 * 输出：
 * 2
 * <p>
 * 示例2
 * 输入：
 * 0
 * <p>
 * 输出：
 * 0
 */
public class _HJ15求int型正整数在内存中存储时1的个数 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int next = scanner.nextInt();
            int count = 0, n = 1;
            while (next >= n) {
                if ((next & n) != 0) {
                    count++;
                }
                n <<= 1;
            }
            System.out.println(count);
        }
    }

    @Test
    public void T_review() {
        int[] n = {1, 2, 3, 4, 5};
        int[] ans = {1, 1, 2, 1, 2};
        for (int i = 0; i < n.length; i++) {
            char[] ch = Integer.toBinaryString(n[i]).toCharArray();
            int count = 0;
            for (char c : ch) {
                if(c == '1'){
                    count++;
                }
            }
            System.out.println(count == ans[i]);
        }
    }
}
